package cn.wyj.dao;

import cn.wyj.domain.Article;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface ArticleMapper {
    /**
     * 根据id查询文章信息
     * @param id
     * @return
     */
    @Select("select *from article where id = #{id}")
    Article findAriticleById(Integer id);

    /**
     * 发表文章,并使用@Options获取自动生动的id
     * @param article
     * @return
     */
    @Insert("insert into article (title,created,modified,tags,categories,allow_comment,thumbnail,content)" +
            "values (#{title},#{created},#{modified},#{tags},#{categories},#{allowComment},#{thumbnail},#{content})")
    @Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id")
    Integer addArticle(Article article);

    /**
     * 分页查询
     * @return
     */
    @Select("select *from article order by id desc")
    List<Article> findByPage();

    /**
     * 根据id删除文章
     * @param id
     */
    @Delete("delete from article where id = #{id}")
    void delArticleById(Integer id);

    /**
     * 站点服务统计 统计文章数量
     * @return
     */
    @Select("select count(1) from article")
    Integer getArticleCount();

    /**
     * 更新文章信息  这里采用xml的方式进行更新 更为灵活
     * 在xml中 可以判断某个属性是否为空 当不修改此属性内容时 不至于覆盖属性内容
     * @param article
     * @return
     */
    void updateArticle(Article article);
}
